Attaching package: ‘dplyr’

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union


Attaching package: ‘plotly’

The following object is masked from ‘package:ggplot2’:

    last_plot

The following object is masked from ‘package:stats’:

    filter

The following object is masked from ‘package:graphics’:

    layout

En esta gráfica de accidentes entre el 2016-2022 de caras de Chernoff podemos observar en un inicio que hay 12 caras, una por cada mes del año. Segundo hay variedad de colores, los cuales representan el día con más accidentes de ese mes. Y por último todas las caras tiene el mismo tamaño, ya que el tamaño lo determina la ruta con más accidentes. Teniendo esto en cuenta, porque tiene el mismo tamaño todas las caras? Pues los datos de análisis indican que a través del intervalo de años entre el 2016-2022 las rutas con más accidentes han sido las cantonales. Es muy interesante que en ese intervalo de años el día que suele tener más accidentes es el viernes, además el Lunes y Sábado sueles tener la misma cantidad de accidentes.

En este gráfico de pastel se muestra el porcentaje de los accidentes entre el 2016-2022 por tipo de ruta. Se puede apreciar que el mayor porcentaje de accidentes en el intervalo de años se ha dado en rutas urbana, eso quizá tenga que ver en parte porque hay menos tránsito en rutas rurales. Con lo anterior en cuenta, también puede ser que porque hay menos cantidad de tránsito hayan menos factores psicoemocionales que afecten al momento de conducir.

Entre 2016-2022, la gráfica apilada de barras muestra que las barras están agrupadas por región y apiladas por cantones con mayor número de accidentes. El color indica cuántos accidentes hubieron en cada cantón. En la zona de Costa Rica, donde más accidentes ocurrieron, la región central y el cantón de San José tienen el mayor número de accidentes. Además, los cantones que comparten más accidentes son los más desarrollados urbanamente, mientras que los cantones con menos accidentes son los más pobres o menos desarrollados. Esto se podría deber a que hay menos vehículos en carretera, por la falta de poder adquisitivo.

Esta gráfica muestra el mínimo de accidentes por año, tipo de circulación, estado del clima y son agrupados por la gravedad del accidente. La mayoría de los accidentes curiosamente se dan con buen tiempo, contrariamente a lo que se esperaría que sea más bien en un mal clima como la lluvia. Esto quiere decir que si hay un buen clima los conductores se relajan y no andan lo suficientemente atentos al ambiente. Esto tiene un efecto inmediato con el tipo de circulación, ya que al no tomar la suficiente precaución se terminan accidentando, y estos en su mayoría son de extrema gravedad.

Esta matriz de disperción multivariada evalúa las condiciones climáticas, el tipo de vía, el tiempo registrado, el tipo de tránsito y el día con más accidentes en Costa Rica del 2016 al 2022. Como muestra la matriz, el número de accidentes no solo en un año, sino en varios años. Depende del lugar por donde conduzcas, si hay prohibiciones de circulación, del tipo de tráfico o de la naturaleza de la carretera. Esto significa que estos tres factores, que varían de un año a otro, no cambian. Además, el día, las condiciones de la carretera y el clima muestran un patrón de accidentes debido a los días ocupados, lo que puede hacer que la conducción en ciertos tipos de vías sea más difícil y peor debido a las condiciones climáticas. Por último, el patrón entre día, carretera y hora puede ser muy similar al anterior, pero puede variar en función de si es hora punta o un indicio de que el conductor no se encuentra en óptimas condiciones de conducción. . Curiosamente, el tráfico, las condiciones meteorológicas y las carreteras son claramente inestables, como se esperaba.

LS0tDQp0aXRsZTogIkFjY2lkZW50ZXMgZGUgdHJhbnNpdG8gZW4gQ1IgZW50cmUgMjAxNi0yMDIyIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3IsIGVjaG8gPSBGQUxTRX0NCmRhdGEgPC0gcmVhZC5jc3YoImFjY2lkZW50ZXNfdHJhbnNpdG9fY29uX3ZpY3RpbWFzXzIwMTZfMjAyMi5jc3YiLCBzZXAgPSAiOyIpDQpgYGANCg0KYGBge3IsIGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0V9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KGNvbG9yc3BhY2UpDQpsaWJyYXJ5KHRyZWVtYXBpZnkpDQpgYGANCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2UgPSBGQUxTRX0NCiNvYnRlbmVtb3MgbG9zIG1lc2VzLCBkaWFzIHkgbGEgcnV0YSBkb25kZQ0KI21hcyBhY2NpZGVudGVzIGhheQ0KbWVzZXNfZGlhc19SVV9tYXNfYWNjaWRlbnRlcyA8LSBkYXRhICU+JQ0KICBmaWx0ZXIoZ3JlcGwoIl5bQS1MXVxcLi4qXFxzKEVuZXJvfEZlYnJlcm98TWFyem98QWJyaWx8TWF5b3xKdW5pb3xKdWxpb3xBZ29zdG98U2V0aWVtYnJlfE9jdHVicmV8Tm92aWVtYnJlfERpY2llbWJyZSkkIiwgTWVzKSkgJT4lDQogIGZpbHRlcihncmVwbCgiXlsxLTddXFwuKERvbWluZ298THVuZXN8TWFydGVzfE1pw6lyY29sZXN8SnVldmVzfFZpZXJuZXN8U8OhYmFkbykkIiwgRMOtYSkpICU+JQ0KICBncm91cF9ieShNZXMsRMOtYSxSdXRhKSAlPiUNCiAgc3VtbWFyaXNlKE1EdG90YWxfYWNjaWRlbnRlcyA9IG4oKSkgJT4lDQogIGFycmFuZ2UoZGVzYyhNRHRvdGFsX2FjY2lkZW50ZXMpKQ0KDQpyZWdpc3Ryb3NfbWFzX2ZyZWN1ZW50ZXMgPC0gbWVzZXNfZGlhc19SVV9tYXNfYWNjaWRlbnRlcyAlPiUNCiAgZ3JvdXBfYnkoTWVzKSAlPiUNCiAgc2xpY2UoMSkNCiAgDQpudW1lcm9fbWVzIDwtIHNlcSgxLCAxMiwgbGVuZ3RoLm91dCA9IG5yb3cocmVnaXN0cm9zX21hc19mcmVjdWVudGVzKSkNCm51bWVyb19tZXMgPC0gYXMuaW50ZWdlcihudW1lcm9fbWVzKQ0KcmVnaXN0cm9zX21hc19mcmVjdWVudGVzIDwtIGNiaW5kKHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcywgTnVtZXJvTWVzID0gbnVtZXJvX21lcykNCg0KIyBDcmVhciB1bmEgY29sdW1uYSBwYXJhIGVsIG7Dum1lcm8gZGUgZMOtYSBzZWfDum4gZWwgZMOtYSBkZSBsYSBzZW1hbmEgZW4gcmVnaXN0cm9zX21hc19mcmVjdWVudGVzDQpyZWdpc3Ryb3NfbWFzX2ZyZWN1ZW50ZXMkQ29sb3JEaWEgPC1pZmVsc2UocmVnaXN0cm9zX21hc19mcmVjdWVudGVzJETDrWEgPT0gIjEuRG9taW5nbyIsICJibHVlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyREw61hID09ICIyLkx1bmVzIiwgInJlZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShyZWdpc3Ryb3NfbWFzX2ZyZWN1ZW50ZXMkRMOtYSA9PSAiMy5NYXJ0ZXMiLCAieWVsbG93IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyREw61hID09ICI0Lk1pw6lyY29sZXMiLCAiY3lhbiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShyZWdpc3Ryb3NfbWFzX2ZyZWN1ZW50ZXMkRMOtYSA9PSAiNS5KdWV2ZXMiLCAiZGFya2dyZWVuIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyREw61hID09ICI2LlZpZXJuZXMiLCAiYnJvd24iLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocmVnaXN0cm9zX21hc19mcmVjdWVudGVzJETDrWEgPT0gIjcuU8OhYmFkbyIsICJibGFjayIsIE5BKSkpKSkpKQ0KDQpyZWdpc3Ryb3NfbWFzX2ZyZWN1ZW50ZXMkaWRSdXRhIDwtaWZlbHNlKHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyRSdXRhID09ICJDYW50b25hbCIsIDEpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCnJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyRNZXMgPC0gZ3N1YigiW0EtTF1cXC4iLCAiIiwgcmVnaXN0cm9zX21hc19mcmVjdWVudGVzJE1lcykNCg0KcmVnaXN0cm9zX21hc19mcmVjdWVudGVzJETDrWEgPC0gZ3N1YigiWzEtN11cXC4iLCAiIiwgcmVnaXN0cm9zX21hc19mcmVjdWVudGVzJETDrWEpDQoNCmBgYA0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KZ3JhZmljb19jaGVybm9mZiA8LSBnZ3Bsb3QocmVnaXN0cm9zX21hc19mcmVjdWVudGVzLCBhZXMoeCA9IE51bWVyb01lcywgeSA9IGlkUnV0YSxsYWJlbDEgPSBNZXMsbGFiZWwyID0gUnV0YSxsYWJlbDMgPSBEw61hKSkgKw0KICBnZW9tX3BvaW50KHNpemUgPSA5LGNvbG91ciA9IHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyRDb2xvckRpYSkgKw0KICBsYWJzKHggPSAiTWVzIix5ID0gIlJ1dGEiKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSAi8J+Rge+4jyDwn5GB77iPIiksdmp1c3QgPSAtNSwgc2l6ZSA9IDMpKyAgDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSAi8J+RhCIpLCB2anVzdCA9IDUsIHNpemUgPSAyKSArDQogIHRoZW1lX2J3KCkNCg0KIyBDb252ZXJ0aW1vcyBlbCBncsOhZmljbyBnZ3Bsb3QyIGVuIHVubyBpbnRlcmFjdGl2byBjb24gcGxvdGx5DQpncmFmaWNvX2ludGVyYWN0aXZvIDwtIGdncGxvdGx5KGdyYWZpY29fY2hlcm5vZmYsdG9vbHRpcCA9IGMoImxhYmVsMSIsICJsYWJlbDIiLCAibGFiZWwzIikpDQoNCiMgTW9zdHJhbW9zIGVsIGdyw6FmaWNvIGludGVyYWN0aXZvDQpncmFmaWNvX2ludGVyYWN0aXZvDQoNCiMgMTIgY2FyYXMgcG9yIGxvcyBtZXNlcywgY29sb3IgY2FyYSBkaWFzIC4uLiB5IHRhbWFuaG8gY2FyYSBydXRhDQpgYGANCg0KRW4gZXN0YSBncsOhZmljYSBkZSBhY2NpZGVudGVzIGVudHJlIGVsIDIwMTYtMjAyMiBkZSBjYXJhcyBkZSBDaGVybm9mZiBwb2RlbW9zIG9ic2VydmFyIGVuIHVuIGluaWNpbyBxdWUgaGF5IDEyIGNhcmFzLCB1bmEgcG9yIGNhZGEgbWVzIGRlbCBhw7FvLiBTZWd1bmRvIGhheSB2YXJpZWRhZCBkZSBjb2xvcmVzLCBsb3MgY3VhbGVzIHJlcHJlc2VudGFuIGVsIGTDrWEgY29uIG3DoXMgYWNjaWRlbnRlcyBkZSBlc2UgbWVzLiBZIHBvciDDumx0aW1vIHRvZGFzIGxhcyBjYXJhcyB0aWVuZSBlbCBtaXNtbyB0YW1hw7FvLCB5YSBxdWUgZWwgdGFtYcOxbyBsbyBkZXRlcm1pbmEgbGEgcnV0YSBjb24gbcOhcyBhY2NpZGVudGVzLiBUZW5pZW5kbyBlc3RvIGVuIGN1ZW50YSwgcG9ycXVlIHRpZW5lIGVsIG1pc21vIHRhbWHDsW8gdG9kYXMgbGFzIGNhcmFzPyBQdWVzIGxvcyBkYXRvcyBkZSBhbsOhbGlzaXMgaW5kaWNhbiBxdWUgYSB0cmF2w6lzIGRlbCBpbnRlcnZhbG8gZGUgYcOxb3MgZW50cmUgZWwgMjAxNi0yMDIyIGxhcyBydXRhcyBjb24gbcOhcyBhY2NpZGVudGVzIGhhbiBzaWRvIGxhcyBjYW50b25hbGVzLiBFcyBtdXkgaW50ZXJlc2FudGUgcXVlIGVuIGVzZSBpbnRlcnZhbG8gZGUgYcOxb3MgZWwgZMOtYSBxdWUgc3VlbGUgdGVuZXIgbcOhcyBhY2NpZGVudGVzIGVzIGVsIHZpZXJuZXMsIGFkZW3DoXMgZWwgTHVuZXMgeSBTw6FiYWRvIHN1ZWxlcyB0ZW5lciBsYSBtaXNtYSBjYW50aWRhZCBkZSBhY2NpZGVudGVzLg0KDQpgYGB7cixlY2hvPUZBTFNFfQ0KcnVyYWxVcmJhbm9fbWFzX2FjY2lkZW50ZXM8LWRhdGEgJT4lDQogIGdyb3VwX2J5KFJ1cmFsLm8udXJiYW5vKSU+JQ0KICBzdW1tYXJpc2UoUlV0b3RhbF9hY2NpZGVudGVzID0gbigpKSAlPiUNCiAgYXJyYW5nZShkZXNjKFJVdG90YWxfYWNjaWRlbnRlcykpDQojIGRlc2RlIDIwMTYgaGFzdGFzIDIwMjINCmBgYA0KDQpgYGB7cixlY2hvPUZBTFNFfQ0KbGFiZWxzID0gcnVyYWxVcmJhbm9fbWFzX2FjY2lkZW50ZXMkUnVyYWwuby51cmJhbm8NCnZhbHVlcyA9IHJ1cmFsVXJiYW5vX21hc19hY2NpZGVudGVzJFJVdG90YWxfYWNjaWRlbnRlcw0KDQpmaWcxIDwtIHBsb3RfbHkodHlwZT0ncGllJywgbGFiZWxzPWxhYmVscywgdmFsdWVzPXZhbHVlcywgDQogICAgICAgICAgICAgICB0ZXh0aW5mbz0nbGFiZWwrcGVyY2VudCcsDQogICAgICAgICAgICAgICBpbnNpZGV0ZXh0b3JpZW50YXRpb249J3JhZGlhbCcpDQpmaWcxIDwtIGZpZzEgJT4lIGxheW91dCh0aXRsZSA9ICdBY2NpZGVudGVzIHBvciBydXRhIGVudHJlIDIwMTYtMjAyMicpDQpmaWcxDQpgYGANCg0KRW4gZXN0ZSBncsOhZmljbyBkZSBwYXN0ZWwgc2UgbXVlc3RyYSBlbCBwb3JjZW50YWplIGRlIGxvcyBhY2NpZGVudGVzIGVudHJlIGVsIDIwMTYtMjAyMiBwb3IgdGlwbyBkZSBydXRhLiBTZSBwdWVkZSBhcHJlY2lhciBxdWUgZWwgbWF5b3IgcG9yY2VudGFqZSBkZSBhY2NpZGVudGVzIGVuIGVsIGludGVydmFsbyBkZSBhw7FvcyBzZSBoYSBkYWRvIGVuIHJ1dGFzIHVyYmFuYSwgZXNvIHF1aXrDoSB0ZW5nYSBxdWUgdmVyIGVuIHBhcnRlIHBvcnF1ZSBoYXkgbWVub3MgdHLDoW5zaXRvIGVuIHJ1dGFzIHJ1cmFsZXMuIENvbiBsbyBhbnRlcmlvciBlbiBjdWVudGEsIHRhbWJpw6luIHB1ZWRlIHNlciBxdWUgcG9ycXVlIGhheSBtZW5vcyBjYW50aWRhZCBkZSB0csOhbnNpdG8gaGF5YW4gbWVub3MgZmFjdG9yZXMgcHNpY29lbW9jaW9uYWxlcyBxdWUgYWZlY3RlbiBhbCBtb21lbnRvIGRlIGNvbmR1Y2lyLg0KDQpgYGB7cixlY2hvPUZBTFNFfQ0KI3kgPW1pZGVwbGFuIHg9IGNhbnRvbg0KI3RlbmVyIGNhbnRvbiBjb24gbWFzIHkgbWVub3MgYWNjaWRlbnRlcw0KcmVnaW9uX2NhbnRvbl9tYXNfYWNjaWRlbnRlczwtZGF0YSU+JQ0KICBncm91cF9ieShSZWdpw7NuLk1pZGVwbGFuLCBDYW50w7NuKSU+JQ0KICBzdW1tYXJpc2UoUkN0b3RhbF9hY2NpZGVudGVzID0gbigpLC5ncm91cHMgPSAiZHJvcCIpDQoNCnJlZ2lvbl9jYW50b25fbWFzX2FjY2lkZW50ZXM8LXJlZ2lvbl9jYW50b25fbWFzX2FjY2lkZW50ZXMlPiUNCiAgZ3JvdXBfYnkoUmVnacOzbi5NaWRlcGxhbiwgQ2FudMOzbiklPiUNCiAgc3VtbWFyaXNlKG1heF92YWxvciA9IG1heChSQ3RvdGFsX2FjY2lkZW50ZXMpLC5ncm91cHMgPSAiZHJvcCIpJT4lDQogIGFycmFuZ2UobWF4X3ZhbG9yKQ0KDQojIE7Dum1lcm8gZGUgY29sb3JlcyBkZXNlYWRvDQpuX2NvbG9yZXMgPC0gMTc2DQoNCiMgR2VuZXJhciBsYSBwYWxldGEgZGUgY29sb3Jlcw0KDQpwYWxldGFfY29sb3JlcyA8LXJhaW5ib3dfaGNsKG5fY29sb3JlcykgIyBFamVtcGxvIGRlIGNvbG9yZXMgYmFzZQ0KYGBgDQoNCmBgYHtyLGVjaG89RkFMU0V9DQoNCmZpZyA8LSBwbG90X2x5KHJlZ2lvbl9jYW50b25fbWFzX2FjY2lkZW50ZXMsIHggPSB+UmVnacOzbi5NaWRlcGxhbiwgeSA9IH5tYXhfdmFsb3IsIG1hcmtlciA9IGxpc3QoY29sb3I9cGFsZXRhX2NvbG9yZXMpICwgdHlwZSA9ICdiYXInLGhvdmVydGVtcGxhdGUgPSB+cGFzdGUoIlJlZ2nDs246ICIsIFJlZ2nDs24uTWlkZXBsYW4sICI8YnI+Q2FudMOzbjogIiwgQ2FudMOzbiwgIjxicj5WYWxvcjogIiwgbWF4X3ZhbG9yLA0KICAgICAgIjxleHRyYT48L2V4dHJhPiIpKQ0KDQpmaWcgPC0gZmlnICU+JSBsYXlvdXQoeWF4aXMgPSBsaXN0KHRpdGxlID0gJycpLHhheGlzPWxpc3QodGl0bGUgPSAnJyksIGJhcm1vZGUgPSAnc3RhY2snKQ0KDQpmaWcNCmBgYA0KDQpFbnRyZSAyMDE2LTIwMjIsIGxhIGdyw6FmaWNhIGFwaWxhZGEgZGUgYmFycmFzIG11ZXN0cmEgcXVlIGxhcyBiYXJyYXMgZXN0w6FuIGFncnVwYWRhcyBwb3IgcmVnacOzbiB5IGFwaWxhZGFzIHBvciBjYW50b25lcyBjb24gbWF5b3IgbsO6bWVybyBkZSBhY2NpZGVudGVzLiBFbCBjb2xvciBpbmRpY2EgY3XDoW50b3MgYWNjaWRlbnRlcyBodWJpZXJvbiBlbiBjYWRhIGNhbnTDs24uIEVuIGxhIHpvbmEgZGUgQ29zdGEgUmljYSwgZG9uZGUgbcOhcyBhY2NpZGVudGVzIG9jdXJyaWVyb24sIGxhIHJlZ2nDs24gY2VudHJhbCB5IGVsIGNhbnTDs24gZGUgU2FuIEpvc8OpIHRpZW5lbiBlbCBtYXlvciBuw7ptZXJvIGRlIGFjY2lkZW50ZXMuIEFkZW3DoXMsIGxvcyBjYW50b25lcyBxdWUgY29tcGFydGVuIG3DoXMgYWNjaWRlbnRlcyBzb24gbG9zIG3DoXMgZGVzYXJyb2xsYWRvcyB1cmJhbmFtZW50ZSwgbWllbnRyYXMgcXVlIGxvcyBjYW50b25lcyBjb24gbWVub3MgYWNjaWRlbnRlcyBzb24gbG9zIG3DoXMgcG9icmVzIG8gbWVub3MgZGVzYXJyb2xsYWRvcy4gRXN0byBzZSBwb2Ryw61hIGRlYmVyIGEgcXVlIGhheSBtZW5vcyB2ZWjDrWN1bG9zIGVuIGNhcnJldGVyYSwgcG9yIGxhIGZhbHRhIGRlIHBvZGVyIGFkcXVpc2l0aXZvLg0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KYW5pb0NURzwtZGF0YSAlPiUNCiAgZ3JvdXBfYnkoQcOxbyxUaXBvLmRlLmNpcmN1bGFjacOzbixFc3RhZG8uZGVsLnRpZW1wbyxDbGFzZS5kZS5hY2NpZGVudGUpICU+JQ0KICBzdW1tYXJpc2UoTnVtZXJvQWNjaWRlbnRlcz1uKCksLmdyb3Vwcz0iZHJvcCIpDQoNCmFuaW9DVEc8LWFuaW9DVEclPiUNCiAgZ3JvdXBfYnkoQcOxbyxUaXBvLmRlLmNpcmN1bGFjacOzbixFc3RhZG8uZGVsLnRpZW1wbyxDbGFzZS5kZS5hY2NpZGVudGUpJT4lDQogIHN1bW1hcmlzZShBY2NpZGVudGVzID0gbWluKE51bWVyb0FjY2lkZW50ZXMpLC5ncm91cHMgPSAiZHJvcCIpJT4lDQogIGFycmFuZ2UoQWNjaWRlbnRlcykNCmFuaW9DVEc8LWFuaW9DVEclPiUNCiAgcmVuYW1lKENpcmN1bGFjaW9uID0gVGlwby5kZS5jaXJjdWxhY2nDs24pJT4lDQogIHJlbmFtZShDbGltYSA9IEVzdGFkby5kZWwudGllbXBvKSU+JQ0KICByZW5hbWUoR3JhdmVkYWQgPSBDbGFzZS5kZS5hY2NpZGVudGUpDQoNCmFuaW9DVEckQcOxbzwtc3Vic3RyKGFuaW9DVEckQcOxbywgc3RhcnQgPSAzLCBzdG9wID0gbmNoYXIoYW5pb0NURyRBw7FvKSkNCiNlbGltaW5vIGVsIDIwIGRlbCBhw7FvIHBhcmEgcXVlIHNlYSBtZWpvciBsYSByZXNwcmVzZW50YWNpw7NuIHRleHR1YWwNCiNvIHNlYSBlbiB2ZXogZGUgMjAxNiBzYWxlIDE2DQpgYGANCg0KYGBge3IsZWNobz1GQUxTRX0NCmZhY2VJbnRlcmFjdGl2byA8LSBnZ3Bsb3QoYW5pb0NURywgYWVzKHg9Q2lyY3VsYWNpb24sIHk9QWNjaWRlbnRlcywgY29sb3I9Q2xpbWEsIGdyb3VwPUdyYXZlZGFkKSkgKw0KICAgIGdlb21fcG9pbnQoKSsNCiAgICBsYWJzKHg9IlRpcG8gZGUgY2lyY3VsYWNpw7NuIix5PSJDYW50aWRhZCBhY2NpZGVudGVzIixjb2xvdXI9IiBFc3RhZG8gZGVsIGNsaW1hIikrDQogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsIDI2MDApLCBicmVha3MgPSBjKDAsIDI2MDApKSsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSAtNDUsIGhqdXN0ID0gMCksYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoYW5nbGU9MTIpKSsNCiAgICBmYWNldF9ncmlkKEHDsW8gfiAuLCBzY2FsZSA9ICJmcmVlX3giLHNwYWNlID0gImZyZWUiKQ0KICAgIA0KDQpnZ3Bsb3RseShmYWNlSW50ZXJhY3Rpdm8pDQpgYGANCg0KRXN0YSBncsOhZmljYSBtdWVzdHJhIGVsIG3DrW5pbW8gZGUgYWNjaWRlbnRlcyBwb3IgYcOxbywgdGlwbyBkZSBjaXJjdWxhY2nDs24sIGVzdGFkbyBkZWwgY2xpbWEgeSBzb24gYWdydXBhZG9zIHBvciBsYSBncmF2ZWRhZCBkZWwgYWNjaWRlbnRlLiBMYSBtYXlvcsOtYSBkZSBsb3MgYWNjaWRlbnRlcyBjdXJpb3NhbWVudGUgc2UgZGFuIGNvbiBidWVuIHRpZW1wbywgY29udHJhcmlhbWVudGUgYSBsbyBxdWUgc2UgZXNwZXJhcsOtYSBxdWUgc2VhIG3DoXMgYmllbiBlbiB1biBtYWwgY2xpbWEgY29tbyBsYSBsbHV2aWEuIEVzdG8gcXVpZXJlIGRlY2lyIHF1ZSBzaSBoYXkgdW4gYnVlbiBjbGltYSBsb3MgY29uZHVjdG9yZXMgc2UgcmVsYWphbiB5IG5vIGFuZGFuIGxvIHN1ZmljaWVudGVtZW50ZSBhdGVudG9zIGFsIGFtYmllbnRlLiBFc3RvIHRpZW5lIHVuIGVmZWN0byBpbm1lZGlhdG8gY29uIGVsIHRpcG8gZGUgY2lyY3VsYWNpw7NuLCB5YSBxdWUgYWwgbm8gdG9tYXIgbGEgc3VmaWNpZW50ZSBwcmVjYXVjacOzbiBzZSB0ZXJtaW5hbiBhY2NpZGVudGFuZG8sIHkgZXN0b3MgZW4gc3UgbWF5b3LDrWEgc29uIGRlIGV4dHJlbWEgZ3JhdmVkYWQuDQoNCmBgYHtyLCBlY2hvID0gRkFMU0V9DQojIENhbGN1bGFyIGxhIGNhbnRpZGFkIGRlIGFjY2lkZW50ZXMgcG9yIGHDsW8NCmZyZWN1ZW5jaWFfYcOxbyA8LSB0YWJsZShkYXRhJEHDsW8pDQoNCiMgQ3JlYXIgdW4gZnJhbWUgZGUgZGF0b3MgY29uIGxhIGZyZWNpZW5jYSB5IGVsIGHDsW8NCmRhdG9zX2ZyZWN1ZW5jaWFfYcOxbyA8LSBkYXRhLmZyYW1lKA0KICBBw7FvID0gbmFtZXMoZnJlY3VlbmNpYV9hw7FvKSwNCiAgQWNjaWRlbnRlcyA9IGFzLm51bWVyaWMoZnJlY3VlbmNpYV9hw7FvKQ0KKQ0KDQojIENyZWFyIGVsIGdyYWZpY28gY29uIHVuIHB1bnRvIHBvciBjYWRhIGHDsW8NCnB1bnRvc19hw7FvIDwtIGdncGxvdChkYXRvc19mcmVjdWVuY2lhX2HDsW8sIGFlcyh4ID0gQcOxbywgeSA9IEFjY2lkZW50ZXMsIGNvbG9yID0gQcOxbykpICsNCiAgZ2VvbV9wb2ludChzaXplID0gNSkgKw0KICBzY2FsZV94X2Rpc2NyZXRlKGJyZWFrcyA9IE5VTEwpICsNCiAgbGFicyh5ID0gIiMgZGUgYWNjaWRlbnRlcyIsIA0KICAgICAgIHRpdGxlID0gIkNhbnRpZGFkIGRlIGFjY2lkZW50ZXMgcG9yIGHDsW8iKSArDQogIHRoZW1lKGF4aXMudGl0bGUueCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCkpDQoNCnB1bnRvc19hw7Fvc19pbnRlcmFjdGl2YSA8LSBnZ3Bsb3RseShwdW50b3NfYcOxbykNCmBgYA0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KYmFycmFzX2hvcmEgPC0gZ2dwbG90KGRhdGEsIGFlcyh4ID0gSG9yYS5yZWNvZGlmaWNhZGEsIGZpbGwgPSBIb3JhLnJlY29kaWZpY2FkYSkpICsNCiAgZ2VvbV9iYXIoKSArDQogIGxhYnModGl0bGUgPSAiQWNjaWRlbnRlcyBwb3IgYcOxbyB5IHBvciBIb3JhIHJlY29kaWZpY2FkYSIsDQogICAgICAgeCA9ICJIb3JhIFJlY29kaWZpY2FkYSIsIHkgPSAiIyBkZSBhY2NpZGVudGVzIiwgZmlsbCA9ICJBw7FvIC8gUmFuZ28gaG9yYXJpbyIpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCkpDQoNCmJhcnJhc19ob3JhX2ludGVyYWN0aXZhIDwtIGdncGxvdGx5KGJhcnJhc19ob3JhKQ0KYGBgDQoNCmBgYHtyLCBlY2hvID0gRkFMU0V9DQpiYXJyYXNfdGlwb19jbGFzZSA8LSBnZ3Bsb3QoZGF0YSwgYWVzKHggPSBUaXBvLmRlLmFjY2lkZW50ZSwgZmlsbCA9IENsYXNlLmRlLmFjY2lkZW50ZSkpICsNCiAgZ2VvbV9iYXIoKSArDQogIGxhYnModGl0bGUgPSAiVGlwb3MgZGUgaGVyaWRvcyBwb3IgdGlwbyBkZSBhY2NpZGVudGUgZW50cmUgMjAxNi0yMDIyIiwNCiAgICAgICB4ID0gIlRpcG8gZGUgYWNjaWRlbnRlIiwgeSA9ICIjIGRlIGFjY2lkZW50ZXMiLCBmaWxsID0gIlRpcG8gZGUgaGVyaWRvcyIpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSAzMTUsIGhqdXN0ID0gMCkpDQoNCmdncGxvdGx5KGJhcnJhc190aXBvX2NsYXNlKQ0KYGBgDQoNCmBgYHtyLGVjaG89RkFMU0V9DQpkYXRvc19tdWx0aWRpbWVuc2lvbmFsZXM8LWRhdGElPiUNCiAgZmlsdGVyKGdyZXBsKCJeWzEtN11cXC4oRG9taW5nb3xMdW5lc3xNYXJ0ZXN8TWnDqXJjb2xlc3xKdWV2ZXN8Vmllcm5lc3xTw6FiYWRvKSQiLCBEw61hKSkgJT4lDQogIGdyb3VwX2J5KEhvcmEucmVjb2RpZmljYWRhLETDrWEsRXN0YWRvLmRlbC50aWVtcG8sVGlwby5kZS5jYWx6YWRhLFRpcG8uZGUuY2lyY3VsYWNpw7NuKSU+JQ0KICBzdW1tYXJpc2UoYWNjaWRlbnRlcz1uKCksLmdyb3VwcyA9ICJkcm9wIikNCg0KZGF0b3NfbXVsdGlkaW1lbnNpb25hbGVzJETDrWEgPC0gZ3N1YigiWzEtN11cXC4iLCAiIiwgZGF0b3NfbXVsdGlkaW1lbnNpb25hbGVzJETDrWEpDQogIA0KYGBgDQoNCg0KYGBge3IsZWNobz1GQUxTRX0NCmF4aXMgPSBsaXN0KHNob3dsaW5lPUZBTFNFLA0KICAgICAgICAgICAgemVyb2xpbmU9RkFMU0UsDQogICAgICAgICAgICBncmlkY29sb3I9JyNmZmZmJywNCiAgICAgICAgICAgIHRpY2tsZW49MSkNCg0KbWF0cml6RCA8LSBkYXRvc19tdWx0aWRpbWVuc2lvbmFsZXMgJT4lDQogIHBsb3RfbHkoKSANCm1hdHJpekQgPC0gbWF0cml6RCAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHR5cGUgPSAnc3Bsb20nLA0KICAgIGRpbWVuc2lvbnMgPSBsaXN0KA0KICAgICAgbGlzdChsYWJlbD0nRMOtYScsdmFsdWVzPX5Ew61hKSwNCiAgICAgIGxpc3QobGFiZWw9J1Ryw6Fuc2l0bycsdmFsdWVzPX5UaXBvLmRlLmNpcmN1bGFjacOzbiksDQogICAgICBsaXN0KGxhYmVsPSdIb3JhJyx2YWx1ZXM9fkhvcmEucmVjb2RpZmljYWRhKSwNCiAgICAgIGxpc3QobGFiZWw9J1bDrWEnLHZhbHVlcz1+VGlwby5kZS5jYWx6YWRhKSwNCiAgICAgIGxpc3QobGFiZWw9J0NsaW1hJyx2YWx1ZXM9fkVzdGFkby5kZWwudGllbXBvKQ0KICAgICkNCiAgKQ0KbWF0cml6RCA8LSBtYXRyaXpEICU+JQ0KICBsYXlvdXQoDQogICAgdGl0bGU9ICdBY2NpZGVudGVzIGRlbCAyMDE2LTIwMjIgZXZhbHVhbmRvIGRpc3RpbnRvcyBmYWN0b3JlcycsDQogICAgaG92ZXJtb2RlPSdjbG9zZXN0JywNCiAgICBkcmFnbW9kZT0gJ3NlbGVjdCcsDQogICAgcGxvdF9iZ2NvbG9yPSdyZ2JhKDI0MCwyNDAsMjQwLCAwLjk1KScsDQogICAgeGF4aXM9bGlzdChkb21haW49TlVMTCwgc2hvd2xpbmU9RiwgemVyb2xpbmU9RiwgZ3JpZGNvbG9yPScjZmZmZicsIHRpY2tsZW49NCksDQogICAgeWF4aXM9bGlzdChkb21haW49TlVMTCwgc2hvd2xpbmU9RiwgemVyb2xpbmU9RiwgZ3JpZGNvbG9yPScjZmZmZicsIHRpY2tsZW49NCksDQogICAgeGF4aXMyPWF4aXMsDQogICAgeGF4aXMzPWF4aXMsDQogICAgeGF4aXM0PWF4aXMsDQogICAgeWF4aXMyPWF4aXMsDQogICAgeWF4aXMzPWF4aXMsDQogICAgeWF4aXM0PWF4aXMNCiAgKQ0KDQptYXRyaXpEIDwtIG1hdHJpekQgJT4lDQogIGxheW91dCgNCiAgeGF4aXMgPSBsaXN0KHRpY2t2YWxzID0gTlVMTCwgdGlja3RleHQgPSBOVUxMKSwNCiAgeGF4aXMyID0gbGlzdCh0aWNrdmFscyA9IE5VTEwsIHRpY2t0ZXh0ID0gTlVMTCksDQogIHhheGlzMyA9IGxpc3QodGlja3ZhbHMgPSBOVUxMLCB0aWNrdGV4dCA9IE5VTEwpLA0KICB4YXhpczQgPSBsaXN0KHRpY2t2YWxzID0gTlVMTCwgdGlja3RleHQgPSBOVUxMKSwNCiAgeGF4aXM1ID0gbGlzdCh0aWNrdmFscyA9IE5VTEwsIHRpY2t0ZXh0ID0gTlVMTCksDQogIHlheGlzID0gbGlzdCh0aWNrdmFscyA9IE5VTEwsIHRpY2t0ZXh0ID0gTlVMTCksDQogIHlheGlzMiA9IGxpc3QodGlja3ZhbHMgPSBOVUxMLCB0aWNrdGV4dCA9IE5VTEwpLA0KICB5YXhpczMgPSBsaXN0KHRpY2t2YWxzID0gTlVMTCwgdGlja3RleHQgPSBOVUxMKSwNCiAgeWF4aXM0ID0gbGlzdCh0aWNrdmFscyA9IE5VTEwsIHRpY2t0ZXh0ID0gTlVMTCksDQogIHlheGlzNSA9IGxpc3QodGlja3ZhbHMgPSBOVUxMLCB0aWNrdGV4dCA9IE5VTEwpDQopDQptYXRyaXpEDQoNCg0KYGBgDQoNCkVzdGEgbWF0cml6IGRlIGRpc3BlcmNpw7NuIG11bHRpdmFyaWFkYSBldmFsw7phIGxhcyBjb25kaWNpb25lcyBjbGltw6F0aWNhcywgZWwgdGlwbyBkZSB2w61hLCBlbCB0aWVtcG8gcmVnaXN0cmFkbywgZWwgdGlwbyBkZSB0csOhbnNpdG8geSBlbCBkw61hIGNvbiBtw6FzIGFjY2lkZW50ZXMgZW4gQ29zdGEgUmljYSBkZWwgMjAxNiBhbCAyMDIyLiBDb21vIG11ZXN0cmEgbGEgbWF0cml6LCBlbCBuw7ptZXJvIGRlIGFjY2lkZW50ZXMgbm8gc29sbyBlbiB1biBhw7FvLCBzaW5vIGVuIHZhcmlvcyBhw7Fvcy4gRGVwZW5kZSBkZWwgbHVnYXIgcG9yIGRvbmRlIGNvbmR1emNhcywgc2kgaGF5IHByb2hpYmljaW9uZXMgZGUgY2lyY3VsYWNpw7NuLCBkZWwgdGlwbyBkZSB0csOhZmljbyBvIGRlIGxhIG5hdHVyYWxlemEgZGUgbGEgY2FycmV0ZXJhLiBFc3RvIHNpZ25pZmljYSBxdWUgZXN0b3MgdHJlcyBmYWN0b3JlcywgcXVlIHZhcsOtYW4gZGUgdW4gYcOxbyBhIG90cm8sIG5vIGNhbWJpYW4uIEFkZW3DoXMsIGVsIGTDrWEsIGxhcyBjb25kaWNpb25lcyBkZSBsYSBjYXJyZXRlcmEgeSBlbCBjbGltYSBtdWVzdHJhbiB1biBwYXRyw7NuIGRlIGFjY2lkZW50ZXMgZGViaWRvIGEgbG9zIGTDrWFzIG9jdXBhZG9zLCBsbyBxdWUgcHVlZGUgaGFjZXIgcXVlIGxhIGNvbmR1Y2Npw7NuIGVuIGNpZXJ0b3MgdGlwb3MgZGUgdsOtYXMgc2VhIG3DoXMgZGlmw61jaWwgeSBwZW9yIGRlYmlkbyBhIGxhcyBjb25kaWNpb25lcyBjbGltw6F0aWNhcy4gUG9yIMO6bHRpbW8sIGVsIHBhdHLDs24gZW50cmUgZMOtYSwgY2FycmV0ZXJhIHkgaG9yYSBwdWVkZSBzZXIgbXV5IHNpbWlsYXIgYWwgYW50ZXJpb3IsIHBlcm8gcHVlZGUgdmFyaWFyIGVuIGZ1bmNpw7NuIGRlIHNpIGVzIGhvcmEgcHVudGEgbyB1biBpbmRpY2lvIGRlIHF1ZSBlbCBjb25kdWN0b3Igbm8gc2UgZW5jdWVudHJhIGVuIMOzcHRpbWFzIGNvbmRpY2lvbmVzIGRlIGNvbmR1Y2Npw7NuLiAuIEN1cmlvc2FtZW50ZSwgZWwgdHLDoWZpY28sIGxhcyBjb25kaWNpb25lcyBtZXRlb3JvbMOzZ2ljYXMgeSBsYXMgY2FycmV0ZXJhcyBzb24gY2xhcmFtZW50ZSBpbmVzdGFibGVzLCBjb21vIHNlIGVzcGVyYWJhLg0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KZ3JhZmljYV9kZV9ncmFmaWNhcyA8LSBzdWJwbG90KHB1bnRvc19hw7Fvc19pbnRlcmFjdGl2YSwgYmFycmFzX2hvcmFfaW50ZXJhY3RpdmEsIG5yb3dzID0gMikNCg0KZ3JhZmljYV9kZV9ncmFmaWNhcw0KYGBg